1. Statement of the Technical Field
The present invention relates to operating system deployment, and in particular to a system and method for deploying an operating system to remote computing hardware independent of the storage media associated with the remote computing hardware.
2. Description of the Related Art
With the ever-increasing demand for computing resources, many organizations are turning to remote operating system deployment as a way to quickly and efficiently install an operating system on a computer. When remotely deploying an operating system, one or more central deployment computers typically are used to “push” the operating system to the remote computing hardware. Such remote computing hardware can be desktop computers, servers, laptop computers or any other computing device that requires the installation of an operating system. In addition to storage devices within the computer chassis itself, such as Integrated Device Electronics (“IDE”) and Small Computer System Interface (“SCSI”) drives, these computers may also need mappings to remote storage devices such as network attached storage (“NAS”), fiber-attached, infiniband-attached, etc. devices as well as redundant arrays of independent disks (“RAID”) storage.
Typically, a user responsible for operating system (“OS”) deployment configures the deployment computer to execute a series of deployment tasks. Such tasks might include which operating system to deploy (WINDOWS, LINUX, etc.) as well as the drive (storage device) partitions and mappings. The deployment computer maintains an inventory of the hardware deployed in the network. The inventory can be derived using known automated techniques or manually configured. Such inventory includes media access control (“MAC”) addresses associated with the hardware. When the computing hardware is connected to the network and powered on, known techniques such as “boot to network” and dynamic host configuration protocol (“DHCP”) are used to establish an interne protocol (“IP”) address and preboot operating system for the device. In addition, current remote OS deployment systems and methods rely on a partition table to establish how the storage devices, also referred to herein as hard drives and hard disks, will be partitioned. Drive partitioning refers to the creation of logical divisions on a physical hard disk that allows one to apply operating system-specific logical formatting. The result is that partitions function as if each partition is a separate hard drive.
Current OS deployment systems require the use of tightly bound partition table definitions to map the OS installation into specific storage hardware. This is especially problematic when there is a need to install the OS on disparate hardware because the user must create separate installation tasks for each different type of hardware configuration upon which the OS will be installed. For example, when installing the Linux OS, the device name must be specified as part of the partition, such as, “hda” for an IDE drive and “sda” for a SCSI drive.
Using the Linux OS example, current OS deployment management systems, if a user had two different computers in the network such as a computer with one IDE device and another with one SCSI drive, the user would have to create two separate installation tasks to deploy the same version of Linux to each. As a more complicated example that presents a greater problem, assume the two different computers in the network were configured such that one computer has an IDE drive and a RAID SCSI drive and the other computer has only a RAID SCSI drive. If the deployment management software simply deployed the Linux OS to the first drive recognized by the OS, then Linux would be deployed to the IDE drive on the first computer and the RAID SCSI drive on the second computer. This may or may not be what the user intended. If the user wanted the OS to be installed on a redundant drive such as the RAID SCSI drive, then the installation on the first computer was made to the wrong drive.
This problem is further exacerbated as remote storage devices are brought into the picture because the conceivable combinations of available storage devices becomes quite large. For example, a computer may have locally attached IDE drives, locally attached SCSI drives, locally attached IDE RAID drives at different RAID levels, locally attached SCSI RAID drives having different RAID levels, NAS drives at different RAID levels, iSCSI (“Internet SCSI”) drives at different RAID levels and fibre-attached drives at different RAID levels. In this scenario, deploying an OS to the first recognized drive is unlikely to meet the user's deployment requirements. Similarly, requiring the user to manually create separate deployment tasks for each conceivable combination is inefficient, time consuming, onerous and ripe for configuration errors. Accordingly, it is desirable to have a system and method for the deployment of an OS which allows the creation and specification of the installation partition table definitions that is independent of the specific storage devices in the network and on the computers.